package com.jzo2o.foundations.handel;

import com.jzo2o.api.foundations.dto.response.RegionSimpleResDTO;
import com.jzo2o.foundations.service.IRegionService;
import com.jzo2o.foundations.service.IServeService;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
@Slf4j
public class SpringCacheSyncHandler {
    @Autowired
    private RedisTemplate redisTemplate; // 自动注入RedisTemplate，用于Redis操作
    @Autowired
    private IRegionService regionService; // 自动注入区域服务接口，用于区域相关操作
    @Autowired
    private IServeService serveService; // 自动注入服务接口，用于服务相关操作


    /**
     * XXL-JOB定时任务：更新区域和服务缓存
     * 任务名为"activeRegionCacheSync"
     */
    @XxlJob("activeRegionCacheSync")
    public void activeRegionCacheSync() {
        log.info("=============开始更新开通区域列表缓存============");
        //删除开通区域缓存
        redisTemplate.delete("JZ_CACHE::ACTIVE_REGIONS");
        //查询开通区域列表进行缓存
        List<RegionSimpleResDTO> regionSimpleResDTOS = regionService.queryActiveRegionListCache();
        log.info("=============开始更新首页服务列表缓存============");
        for (RegionSimpleResDTO regionSimpleResDTO : regionSimpleResDTOS) {
            Long id = regionSimpleResDTO.getId();//获取每个开通区域的id
            //根据区域id删除首页服务列表缓存
            redisTemplate.delete("JZ_CACHE:SERVE_ICON::" + id);
            //查询首页数据放入缓存
            serveService.firstPageServeList(id);
            log.info("=============开始更新热门服务列表缓存============");
            //根据区域id删除热门列表服务缓存
            redisTemplate.delete("JZ_CACHE:HOT_SERVE::"+id);
            //查询热门服务列表数据放入缓存
            serveService.hotServeList(id);
        }

    }
}
